# 作者：雨季玫瑰嗜血穿心
# 开发时间：2023/9/17 14:53


import matplotlib.pyplot as plt
from sklearn.model_selection import cross_val_predict
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
from matplotlib.pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus']=False

# 加载波士顿房价数据集
boston = load_boston()
X, y = boston.data, boston.target

# 创建线性回归模型对象
lr_model = LinearRegression()

# 使用交叉验证法进行预测
y_pred = cross_val_predict(lr_model, X, y, cv=5)

# 在训练集上进行拟合
lr_model.fit(X, y)

# 输出线性模型
print("线性回归模型系数：", lr_model.coef_)
print("线性回归模型截距：", lr_model.intercept_)

# 计算均方误差和R2分数
mse = mean_squared_error(y, y_pred)
r2 = r2_score(y, y_pred)

# 绘制真实房价与预测房价走势图
plt.scatter(y, y_pred, color='b')
plt.plot([min(y), max(y)], [min(y), max(y)], 'k--', lw=2)  # 画出对角线
plt.xlabel('真实房价')
plt.ylabel('预测房价')
plt.title('真实房价与预测房价走势图')
plt.show()

# 输出性能度量
print("均方误差：", mse)
print("R2分数：", r2)